/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.una.pol.tesis.ii.wsrest;

import com.google.gson.Gson;
import com.sun.jersey.api.view.Viewable;
import java.util.HashMap;
import java.util.Map;
import javax.ejb.Stateless;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.NewCookie;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.apache.log4j.Logger;
import py.una.informatica.dto.Login;
import py.una.informatica.dto.Respuesta;

/**
 * REST Web Service
 *
 * @author Leandro
 */
@Path("/login")
@Stateless
public class LoginResource {

    @Context
    private UriInfo context;

//    @EJB
//    private Emergencia bean;    
    /**
     * Creates a new instance of PacientesResource
     */
    public LoginResource() {
    }

    @GET
    @Produces("text/html")
    public Response index(@Context HttpServletRequest req) {
        try {
            HttpSession session = req.getSession(true);
            Logger.getLogger("").info("Session, LoginResource.index: " + session.getId());
            if (session.getId().equalsIgnoreCase("1cafd76aaea44519fe247a84cd75")) {
                return Response.ok(new Viewable("/menu")).build();
            }

        } catch (Exception e) {
            Logger.getLogger("").info("Error al iniciar sesión", e);
        }
        return Response.ok(new Viewable("/login")).build();
    }

    @POST
    @Produces("text/html")
    @Path("/index")
    public Response login(@Context HttpServletRequest req, String entrada) {
        Gson gson = new Gson();
        Map<String, Object> map = new HashMap<String, Object>();
        try {
            HttpSession session = req.getSession(true);
            Logger.getLogger("").info("Session, LoginResource.login: " + session.getId());

            Logger.getLogger("").info("Entrada LoginResource.login: " + entrada);
            Login login = gson.fromJson(entrada, Login.class);
            Logger.getLogger("").info("Clase login: " + login.toString());

            map.put("tipoUsu", "ADMINISTRADOR");
            return Response.ok(new Viewable("/menu", map)).build();
        } catch (Exception e) {
            Logger.getLogger("").info("Error al iniciar sesión", e);
            map.put("errorDes", "Error al iniciar sesi&oacute;n, int&eacute;ntelo de nuevo.");
        }

        return Response.ok(new Viewable("/login", map)).build();
    }

    @POST
    @Path("/movil")
    public String loginMovil(@Context HttpServletRequest req, String entrada) {
        Gson gson = new Gson();
        Respuesta respuesta = new Respuesta();
        Map<String, Object> map = new HashMap<String, Object>();
        String respuestaJson = "";
        try {
            HttpSession session = req.getSession(true);
            Logger.getLogger("").info("Session, LoginResource.login: " + session.getId());

            Logger.getLogger("").info("Entrada LoginResource.login: " + entrada);
            Login login = gson.fromJson(entrada, Login.class);
            Logger.getLogger("").info("Clase login: " + login.toString());

            respuesta.setEstado("0");
            respuesta.setMensaje("OK");
            respuesta.setDato(null);

            respuestaJson = gson.toJson(respuesta);
            Logger.getLogger("").info("Respuesta login movil: " + respuestaJson);
        } catch (Exception e) {
            Logger.getLogger("").info("Error al iniciar sesión", e);
            respuesta.setEstado("-1");
            map.put("errorDes", "Error al iniciar sesi&oacute;n, int&eacute;ntelo de nuevo.");
        }

        return respuestaJson;
    }
}